home *** CD-ROM | disk | FTP | other *** search
/ Amiga Collections: Franz PD / Franz PD Disk #167 (1992)(Rhein-Sieg-Soft).zip / Franz PD Disk #167 (1992)(Rhein-Sieg-Soft).adf / CDs / CDListe < prev    next >
Text File  |  1992-04-03  |  13KB  |  448 lines

  1. REM ***********************************
  2. REM ***     CD/LP/MC-Verwaltung     ***
  3. REM ***********************************
  4. REM ***     (c) CoolMcCool-Soft     ***
  5. REM ******         V 1.6         ******
  6. REM ***  Version 1.0  - 10.11.1991  ***
  7. REM ***  Version 1.01 - 15.11.1991  ***
  8. REM ***  Version 1.50 - 18.11.1991  ***
  9. REM ***  Version 1.6  - 14.12.1991  ***
  10. REM ***  Version 1.7  - 04.01.1992  ***
  11. REM ***********************************
  12.  
  13. LIBRARY "dos.library"
  14. DECLARE FUNCTION Lock& LIBRARY
  15.  
  16. SCREEN 2, 640, 256, 2, 2
  17. WINDOW 2,"CD-Verwaltung",(1,1)-(630,200),22,2
  18.  
  19. Variablen:
  20.    DIM IndexText$(200)
  21.    DIM IndexNr%(200)
  22.    Eingabe$ = "0"
  23.    Ende = 0
  24.    veraendert = 0
  25.    Nochmal$ = "j"
  26.    StandardName$ = "Liste"
  27.  
  28. Farben:
  29.    PALETTE 0,.6,.6,.6
  30.    PALETTE 1,.3,.3,.3
  31.    PALETTE 2,.8,.8,0
  32.    PALETTE 3,.1,.1,.1
  33.  
  34. Menue:
  35.    WHILE Ende <> 1
  36.       CLS
  37.       Stil& = 3
  38.       SchreibStil(Stil&)
  39.       LOCATE 2,27 : PRINT "Musik-Dateiverwaltung V1.7"
  40.       Stil& = 0 : SchreibStil(Stil&)
  41.       LOCATE 4,2  : PRINT "1. Datei bearbeiten"
  42.       LOCATE 5,2  : PRINT "2. Datei drucken"
  43.       LOCATE 6,2  : PRINT "3. Datei sortieren"
  44.       LOCATE 7,2  : PRINT "4. Index speichern"
  45.       LOCATE 8,2  : PRINT "5. Ende"
  46.       LOCATE 11,2 : INPUT "Ihre Eingabe : ",Eingabe$
  47.       WHILE VAL(Eingabe$) < 1 AND VAL(Eingabe$) > 5
  48.          LOCATE 11,19 : INPUT "",Eingabe$
  49.       WEND
  50.       ON VAL(Eingabe$) GOSUB DateiBearbeiten, Drucken, Sortieren, IndexSpeichern, Beenden
  51.    WEND
  52.    END
  53.  
  54. DateiBearbeiten:
  55.    GOSUB DateiNamenPruefen
  56.    CLS
  57.    DatensatzNummer = 1
  58.    IdN$ = DateiName$
  59.    Quit = 0
  60.    CALL Exists(IdN$, Exist&)
  61.    IF Exist& = 0 THEN
  62.       VDatensaetze = 0
  63.    ELSE
  64.       GOSUB SatzAnzahlPruefen
  65.       GOSUB IndexTabelleLesen
  66.       GET #1, 1
  67.    END IF
  68.    CLS
  69.    GOSUB Bildschirmausgabe
  70.    LOCATE 2,25 : PRINT "Eingabebildschirm"
  71.    WHILE Quit <> 1
  72.       LINE (144,39)-(463,48),1,bf
  73.       LINE (144,55)-(463,64),1,bf
  74.       LINE (144,71)-(239,80),1,bf
  75.       LINE (144,87)-(191,96),1,bf
  76.       LINE (144,103)-(255,112),1,bf
  77.       IF VDatensaetze > 0 THEN
  78.          COLOR 2,1
  79.          Stil& = 0
  80.          SchreibStil(Stil&)
  81.          LOCATE 6,19 : PRINT T$
  82.          LOCATE 8,19 : PRINT N$
  83.          LOCATE 10,19 : PRINT A$
  84.          LOCATE 12,19 : PRINT Z$
  85.          LOCATE 14,19 : PRINT S$
  86.       END IF
  87.       COLOR 2,1
  88.       LOCATE 4,48 : PRINT USING "####";DatensatzNummer
  89.       LOCATE 4,74 : PRINT USING "####";VDatensaetze
  90.       COLOR 1,0
  91.       LOCATE 20,2 : INPUT " Was nun (B)earbeiten/(E)rweitern/(V)or/(Z)urück/(Q)uit ?",Editieren$ 
  92.       IF LEFT$(UCASE$(Editieren$),1) = "E" OR LEFT$(UCASE$(Editieren$),1) = "B" THEN
  93.          IF LEFT$(UCASE$(Editieren$),1) = "E" THEN
  94.             DatensatzNummer = VDatensaetze + 1
  95.             InNr = DatensatzNummer
  96.             LINE (144,39)-(463,48),1,bf
  97.             LINE (144,55)-(463,64),1,bf
  98.             LINE (144,71)-(239,80),1,bf
  99.             LINE (144,87)-(191,96),1,bf
  100.             LINE (144,103)-(255,112),1,bf
  101.             COLOR 2,1
  102.             LOCATE 4,48 : PRINT USING "####";DatensatzNummer
  103.             LOCATE 4,74 : PRINT USING "####";VDatensaetze
  104.             COLOR 1,0
  105.             VDatensaetze = VDatensaetze + 1
  106.          ELSE
  107.             COLOR 2,1
  108.             LOCATE 6,19 : PRINT T$
  109.             LOCATE 8,19 : PRINT N$
  110.             LOCATE 10,19 : PRINT A$
  111.             LOCATE 12,19 : PRINT Z$
  112.             LOCATE 14,19 : PRINT S$
  113.             DummyTitel$ = T$
  114.             DummyNamen$ = N$
  115.             DummyArt$ = A$
  116.             DummyZeit$ = Z$
  117.             DummyStil$ = S$
  118.             COLOR 1,0
  119.          END IF
  120.          GOSUB Eingabe
  121.          LSET T$=Titel$
  122.          LSET N$=Namen$
  123.          LSET A$=Art$
  124.          LSET Z$=Zeit$
  125.          LSET S$=Stil$
  126.          GOSUB IndexTabelleEintragen
  127.          PUT #1,DatensatzNummer
  128.          veraendert = 1
  129.       ELSEIF LEFT$(UCASE$(Editieren$),1) = "V" THEN
  130.          IF DatensatzNummer + VAL(RIGHT$(Editieren$,4)) > VDatensaetze THEN
  131.             DatensatzNummer = VDatensaetze
  132.          ELSE
  133.             DatensatzNummer = DatensatzNummer +  VAL(RIGHT$(Editieren$,4))
  134.          END IF
  135.          GET #1, DatensatzNummer
  136.       ELSEIF LEFT$(UCASE$(Editieren$),1) = "Z" THEN
  137.          IF DatensatzNummer - VAL(RIGHT$(Editieren$,4)) < 1 THEN
  138.             DatensatzNummer = 1
  139.          ELSE
  140.             DatensatzNummer = DatensatzNummer - VAL(RIGHT$(Editieren$,4))
  141.          END IF
  142.          GET #1, DatensatzNummer
  143.       ELSEIF LEFT$(UCASE$(Editieren$),1) = "Q" THEN
  144.          Quit = 1
  145.          REM IF VDatensaetze = DatensatzNummer THEN VDatensaetze = VDatensaetze - 1
  146.       END IF
  147.    WEND
  148.    CLOSE #1
  149.    RETURN
  150.  
  151. Drucken:
  152.    GOSUB DateiNamenPruefen
  153.    GOSUB SatzAnzahlPruefen
  154.    GOSUB IndexTabelleLesen
  155.    DatensatzNummer = 1
  156.    DruckNummer% = 1
  157.    gefunden = 0
  158.    InNr = 1
  159.    LOCATE 17,2 : PRINT "(D)rucker oder (B)ildschirm "
  160.    Drucken$ = INKEY$ : WHILE UCASE$(Drucken$) <> "D" AND UCASE$(Drucken$) <> "B" : Drucken$ = INKEY$ : WEND
  161.    IF UCASE$(Drucken$) = "B" THEN
  162.       Zeile = 4
  163.       GET #1,DatensatzNummer
  164.       WHILE InNr <= VDatensaetze
  165.          CLS
  166.          LOCATE 2,2  : PRINT " DS Titel                                Name"
  167.          LOCATE 3,1  : PRINT "-------------------------------------------------------------------------------"
  168.          WHILE InNr <= VDatensaetze AND Zeile < 20
  169.             DatensatzNummer = IndexNr%(InNr)
  170.             GET #1, DatensatzNummer
  171.             LOCATE Zeile,2    : PRINT USING "###";DruckNummer%
  172.             DruckNummer% = DruckNummer% + 1
  173.             LOCATE Zeile,6    : PRINT T$
  174.             LOCATE Zeile,37   : PRINT "     "
  175.             LOCATE Zeile,40   : PRINT N$
  176.             Zeile = Zeile + 1
  177.             InNr = InNr + 1
  178.          WEND
  179.          LOCATE 21,2 : PRINT "(B)eenden / Weiter mit beliebiger Taste"
  180.          Taste$ = INKEY$ : WHILE UCASE$(Taste$) <> "B" AND Taste$ = "" : Taste$ = INKEY$ : WEND
  181.          IF UCASE$(Taste$) = "B" THEN InNr = VDatensaetze + 1
  182.          Zeile = 4
  183.       WEND
  184.       CLOSE #1
  185.    ELSEIF UCASE$(Drucken$) = "D" THEN
  186.       OPEN "PAR:" FOR OUTPUT AS #2
  187.       PRINT #2, CHR$(14);               : REM Breitschrift EIN
  188.       PRINT #2, "CDListe"
  189.       PRINT #2, CHR$(27);"M";           : REM 12 Zeichen/Zoll
  190.       PRINT #2, CHR$(27);"x";CHR$(1);   : REM Schönschrift-Modus EIN
  191.       PRINT #2, CHR$(13)
  192.       GOSUB DatumZeitUmwandlung
  193.       PRINT #2, "Vom: ";Datum$;"     ";"Um: ";Zeit$
  194.       PRINT #2, CHR$(13)
  195.       PRINT #2, CHR$(13)
  196.       PRINT #2, CHR$(27);"G";
  197.       PRINT #2, "  DS Titel                                      Laenge   Art"
  198.       PRINT #2, CHR$(13);
  199.       PRINT #2, CHR$(27);"-";CHR$(1);   : REM Unterstreichen-Modus EIN
  200.       PRINT #2, "     Name                                       Stil        "
  201.       PRINT #2, CHR$(27);"-";CHR$(0);   : REM Unterstreichen-Modus AUS
  202.       PRINT #2, CHR$(27);"H";
  203.       WHILE InNr <= VDatensaetze
  204.          DatensatzNummer = IndexNr%(InNr)
  205.          GET #1, DatensatzNummer
  206.          PRINT #2, CHR$(13);
  207.          PRINT #2, USING "####";DruckNummer%;
  208.          DruckNummer% = DruckNummer% + 1
  209.          PRINT #2, CHR$(27);"G";        : REM Fettschrift-Modus EIN
  210.          PRINT #2, " ";T$;
  211.          PRINT #2, CHR$(27);"H";        : REM Fettschrift-Modus AUS
  212.          FOR i=LEN(T$)+6 TO 48
  213.             PRINT #2,SPC(1);
  214.          NEXT i
  215.          PRINT #2, Z$;
  216.          FOR i=(LEN(T$)+LEN(Z$)+6) TO 54
  217.             PRINT #2, SPC(1);
  218.          NEXT i
  219.          PRINT #2, A$
  220.          PRINT #2, CHR$(13);
  221.          PRINT #2, "     ";N$;
  222.          FOR i=LEN(N$)+6 TO 48
  223.             PRINT #2, SPC(1)
  224.          NEXT i
  225.          PRINT #2, S$
  226.          PRINT #2, CHR$(13)
  227.          InNr = InNr + 1
  228.       WEND
  229.    END IF
  230.    CLOSE #1, #2
  231.    RETURN
  232.  
  233. IndexTabelleEintragen:
  234.    InNr = DatensatzNummer
  235.    IndexText$(InNr) = N$
  236.    IndexNr%(InNr) = DatensatzNummer
  237.    RETURN
  238.  
  239. IndexTabelleLesen:
  240.    IdN$ = IndexDateiName$ + CHR$(0)
  241.    CALL Exists (IdN$, Exist&)
  242.    InNr = 1
  243.    IF Exist& = 0 THEN
  244.       Text$ = "Bitte etwas Geduld,Indexdatei wird erstellt!"
  245.       CALL Meldung (Text$)
  246.       DatensatzNummer = 1
  247.       GET #1, DatensatzNummer
  248.       WHILE DatensatzNummer <= VDatensaetze
  249.          GET #1, DatensatzNummer
  250.          GOSUB IndexTabelleEintragen
  251.          DatensatzNummer = DatensatzNummer + 1
  252.       WEND
  253.       veraendert = 1
  254.       GOSUB IndexSpeichern
  255.    END IF
  256.    InNr = 1
  257.    OPEN IndexDateiName$ FOR INPUT AS #3
  258.    WHILE NOT EOF(3)
  259.       INPUT #3, IndexText$(InNr)
  260.       INPUT #3, IndexNr%(InNr)
  261.       InNr = InNr + 1
  262.    WEND
  263.    CLOSE #3
  264.    RETURN
  265.  
  266. Sortieren:
  267.    GOSUB DateiNamenPruefen
  268.    GOSUB SatzAnzahlPruefen
  269.    GOSUB IndexTabelleLesen
  270.    x = 2
  271.    FOR InNr = 1 TO VDatensaetze-1
  272.       FOR InNr2 = x TO VDatensaetze
  273.          IF IndexText$(InNr) > IndexText$(InNr2) THEN
  274.             SWAP IndexText$(InNr), IndexText$(InNr2)
  275.             SWAP IndexNr%(InNr), IndexNr%(InNr2)
  276.          END IF
  277.       NEXT InNr2
  278.       x = x + 1
  279.    NEXT InNr
  280.    veraendert = 1
  281.    CLOSE
  282.    RETURN
  283.  
  284. DateiNamenPruefen:
  285.    LOCATE 20,2  : PRINT "Dateiname / RETURN = ";StandardName$;" : ";
  286.    INPUT "",DateiName$
  287.    IF DateiName$ = "" THEN DateiName$ = StandardName$
  288.    WHILE LEN(DateiName$) < 3
  289.       LOCATE 17,2 : PRINT "Dateiname muß mindestens 3 Buchstaben lang sein!"
  290.       LOCATE 20,2 : PRINT "DateiName / RETURN = ";StandardName$;" : ";
  291.       LINE INPUT DateiName$
  292.    WEND
  293.    IF RIGHT$(DateiName$,4) <> ".cdl" THEN
  294.       IndexDateiName$ = DateiName$
  295.       DateiName$ = DateiName$ + ".cdl"
  296.    ELSE
  297.       DummyFeld = LEN(DateiName$)
  298.       DummyFeld = DummyFeld - 4
  299.       IndexDateiName$ = LEFT$(DateiName$,DummyFeld)
  300.    END IF
  301.    IndexDateiName$ = IndexDateiName$ + ".ndx"
  302.    OPEN "R",#1,DateiName$,112
  303.    FIELD #1, 40 AS T$, 40 AS N$, 12 AS A$, 6 AS Z$, 14 AS S$
  304.    StandardName$ = DateiName$
  305.    RETURN
  306.  
  307. SatzAnzahlPruefen:
  308.    VDatensaetze = INT(LOF(1)/112)
  309.    RETURN
  310.  
  311. Beenden:
  312.    IF veraendert = 1 THEN
  313.       Text$ = "IndexDatei wird gerade gespeichert!"
  314.       CALL Meldung (Text$)
  315.       GOSUB IndexSpeichern
  316.    END IF
  317.    Ende = 1
  318.    CLOSE
  319.    LIBRARY CLOSE
  320.    WINDOW CLOSE 2
  321.    SCREEN CLOSE 2
  322.    RETURN
  323.  
  324. IndexSpeichern:
  325.    DatensatzNummer = 1
  326.    IF veraendert = 0 THEN
  327.       Text$ = "Noch keine Datei bearbeitet / im Speicher!"
  328.       CALL Meldung (Text$)
  329.    ELSE
  330.       OPEN IndexDateiName$ FOR OUTPUT AS #3
  331.       FOR InNr = 1 TO VDatensaetze
  332.          WRITE #3, IndexText$(InNr)
  333.          PRINT #3, IndexNr%(InNr)
  334.       NEXT InNr
  335.       veraendert = 0
  336.       CLOSE #3
  337.    END IF
  338.    RETURN
  339.  
  340. Bildschirmausgabe:
  341.    COLOR 1,0
  342.    LINE (11,23)-(210,32),1,bf
  343.    LINE (10,22)-(211,33),3,b
  344.    LINE (9,23)-(9,32),3
  345.    LINE (212,23)-(212,32),3
  346.    LINE (227,23)-(411,32),1,bf
  347.    LINE (226,22)-(412,33),3,b
  348.    LINE (225,23)-(225,32),3
  349.    LINE (413,23)-(413,32),3
  350.    LINE (428,23)-(619,32),1,bf
  351.    LINE (427,22)-(620,33),3,b
  352.    LINE (426,23)-(426,32),3
  353.    LINE (621,23)-(621,32),3
  354.    LINE (143,38)-(464,49),3,b
  355.    LINE (142,39)-(142,48),3
  356.    LINE (465,39)-(465,48),3
  357.    LINE (143,54)-(464,65),3,b
  358.    LINE (142,55)-(142,64),3
  359.    LINE (465,55)-(465,64),3
  360.    LINE (143,70)-(240,81),3,b
  361.    LINE (142,71)-(142,80),3
  362.    LINE (241,71)-(241,80),3
  363.    LINE (143,86)-(192,97),3,b
  364.    LINE (142,87)-(142,96),3
  365.    LINE (193,87)-(193,96),3
  366.    LINE (143,102)-(256,113),3,b
  367.    LINE (142,103)-(142,112),3
  368.    LINE (257,103)-(257,112),3
  369.    COLOR 2,1
  370.    Stil& = 2
  371.    SchreibStil(Stil&)
  372.    LOCATE 4,3  : PRINT "Dateiname : ";DateiName$
  373.    LOCATE 4,30 : PRINT "Datensatznummer : "
  374.    LOCATE 4,55 : PRINT "vorh. Datensätze : "
  375.    COLOR 1,0
  376.    LOCATE 6,2  : PRINT "Titel          :"
  377.    LOCATE 8,2  : PRINT "Name (S./Gr.)  :"
  378.    LOCATE 10,2  : PRINT "Art            :"
  379.    LOCATE 12,2  : PRINT "Länge          :"
  380.    LOCATE 14,2  : PRINT "Stilrichtung   :"
  381.    RETURN
  382.  
  383. Eingabe:
  384.    IF UCASE$(Editieren$) <> "B" THEN
  385.       LINE (144,39)-(463,48),1,bf
  386.       LINE (144,55)-(463,64),1,bf
  387.       LINE (144,71)-(239,80),1,bf
  388.       LINE (144,87)-(191,96),1,bf
  389.       LINE (144,103)-(255,112),1,bf
  390.    END IF
  391.    COLOR 2,1
  392.    LOCATE 6,19 : LINE INPUT Titel$
  393.    IF Titel$ = "" THEN
  394.       Titel$ = DummyTitel$
  395.       LOCATE 6,19 : PRINT Titel$
  396.    END IF
  397.    LOCATE 8,19 : LINE INPUT Namen$
  398.    IF Namen$ = "" THEN
  399.       Namen$ = DummyNamen$
  400.       LOCATE 8,19 : PRINT Namen$
  401.    END IF
  402.    DummyNamen$ = Namen$
  403.    LOCATE 10,19 : LINE INPUT Art$
  404.    IF Art$ = "" THEN
  405.       Art$ = DummyArt$
  406.       LOCATE 10,19 : PRINT Art$
  407.    END IF
  408.    DummyArt$ = Art$
  409.    LOCATE 12,19 : LINE INPUT Zeit$
  410.    IF Zeit$ = "" THEN
  411.       Zeit$ = DummyZeit$
  412.       LOCATE 12,19 : PRINT Zeit$
  413.    END IF
  414.    LOCATE 14,19 : LINE INPUT Stil$
  415.    IF Stil$ = "" THEN
  416.       Stil$ = DummyStil$
  417.       LOCATE 14,19 : PRINT Stil$
  418.    END IF
  419.    RETURN
  420.  
  421. DatumZeitUmwandlung:
  422.    Tag$ = MID$(DATE$,4,2)
  423.    Monat$ = MID$(DATE$,1,2)
  424.    Jahr$ = MID$(DATE$,7,4)
  425.    Datum$ = Tag$+"."+Monat$+"."+Jahr$
  426.    Stunden$ = MID$(TIME$,1,2)
  427.    Minuten$ = MID$(TIME$,4,2)
  428.    Sekunden$ = MID$(TIME$,7,2)
  429.    Zeit$ = Stunden$+":"+Minuten$+":"+Sekunden$
  430.    RETURN
  431.  
  432. SUB Exists (IdN$, Exist&) STATIC
  433.    Modus& = -2
  434.    Exist& = Lock&(SADD(IdN$), Modus&)
  435.    UnLock& Exist&
  436. END SUB
  437.  
  438. SUB Meldung (Text$) STATIC
  439.    WHILE LEN(Text$) < 50
  440.       Text$ = Text$ + " "
  441.    WEND
  442.    LOCATE 17,2 : PRINT "Meldung: ";Text$
  443. END SUB
  444.  
  445. SUB SchreibStil(Stil&) STATIC
  446.    POKE WINDOW(8)+56,Stil&
  447. END SUB
  448.